package it.controllocredito.backend.persistence.tables;

import android.content.ContentValues;
import android.util.Log;

public abstract class SogliaTable {

    private static final String log_class_name = "SogliaTable";

    private static final String TABLE_NAME = "SOGLIA";

    public enum Columns {
	SOGLIA_ID("sogliaId", 0), TIPO("tipo", 1), FREQUENZA("frequenza", 2), GIORNO_INIZIO_MESE(
		"giornoInizioMese", 3), GIORNO_INIZIO_SETTIMANA(
		"giornoInizioSettimana", 4), VALORE("valore", 5), UNITA_DI_MISURA(
		"unitaDiMisura", 6), CONFIGURATION_ID("configurationId", 7);

	String name;
	int num;

	private Columns(String name, int num) {
	    this.name = name;
	    this.num = num;
	}
    };

    public static String getName() {
	return TABLE_NAME;
    }

    // metodo per ottenere la query di creazione della tablla
    public static String getCreateQuery() {
	String createQuery = "CREATE TABLE IF NOT EXISTS "
		+ SogliaTable.TABLE_NAME + " (" + Columns.SOGLIA_ID.toString()
		+ " INTEGER PRIMARY KEY AUTOINCREMENT, "
		+ Columns.TIPO.toString() + " VARCHAR(12) NOT NULL, "
		+ Columns.FREQUENZA.toString() + " VARCHAR(12) NOT NULL, "
		+ Columns.GIORNO_INIZIO_MESE.toString() + " INTEGER, "
		+ Columns.GIORNO_INIZIO_SETTIMANA.toString() + " VARCHAR(12), "
		+ Columns.VALORE.toString() + " INTEGER NOT NULL, "
		+ Columns.UNITA_DI_MISURA.toString() + " VARCHAR(12) NOT NULL, "
		+ Columns.CONFIGURATION_ID.toString() + " INTEGER NOT NULL, "
		+ "FOREIGN KEY("+Columns.CONFIGURATION_ID.toString()+") REFERENCES "+ConfigurationTable.getName()+"("+ConfigurationTable.Columns.CONFIGURATION_ID.toString()+"));";
	Log.d(log_class_name, "createQuery:" + createQuery);
	return createQuery;
    }

    // crea una nuova riga sul db con tutti i campi
    public static ContentValues createRecord(String tipo, String frequenza,
	    Integer giorno_inizio_mese, String giorno_inizio_settimana,
	    int valore, String unita_di_misura, long configuration_id) {

	ContentValues cv = new ContentValues();
	cv.put(Columns.TIPO.toString(), tipo);
	cv.put(Columns.FREQUENZA.toString(), frequenza);
	cv.put(Columns.GIORNO_INIZIO_MESE.toString(), giorno_inizio_mese);
	cv.put(Columns.GIORNO_INIZIO_SETTIMANA.toString(), giorno_inizio_settimana);
	cv.put(Columns.VALORE.toString(), valore);
	cv.put(Columns.UNITA_DI_MISURA.toString(), unita_di_misura);
	cv.put(Columns.CONFIGURATION_ID.toString(), configuration_id);
	return cv;
    }

    public static String getKeyColumn() {
	return Columns.SOGLIA_ID.toString();
    }

    public static String[] getColumns() {
	String[] arrayTableColumns = { Columns.SOGLIA_ID.toString(),
		Columns.TIPO.toString(), Columns.FREQUENZA.toString(),
		Columns.GIORNO_INIZIO_MESE.toString(),
		Columns.GIORNO_INIZIO_SETTIMANA.toString(),
		Columns.VALORE.toString(), Columns.UNITA_DI_MISURA.toString() };
	return arrayTableColumns;
    }
    
}